通过 Rails 访问 has_many 上的附加值

2024-04-24

我在访问 has_many 上名为“permission”的附加参数的值时遇到了真正的麻烦。这可能是很简单的事情。 我的 3 个型号是

class User < ActiveRecord::Base
  has_many :players_users
  has_many :players, through: :players_users
end
class Player < ActiveRecord::Base
  has_many :players_users
  has_many :users, through: :players_users
end
class PlayersUser < ActiveRecord::Base
  belongs_to :user
  belongs_to :player
  validates :player_id, uniqueness: { scope: :user_id }
end

我的控制器保存记录没有问题。将权限值添加到正确的连接表中。

def create
    @players = Player.new(players_params)
    @user= current_user
    if @players.save
      @player = Player.last
      @user.save && @user.players_users.create(:player_id =>@player.id, :permission =>"owner")
      redirect_to '/players'
    else
      render 'new'
    end
  end

但是我似乎无法正确访问它 我努力了

perm = User.find(current_user).players_users.includes(:Permission)
 if perm == "owner"

这给出了一个 ActiveRecord::AssociationNotFoundError,在 PlayersUser 上找不到名为“Permission”的关联;也许你拼错了?

我也尝试过

 perm = User.players_users.where(player_id = @player.id && user_id = current_user)
perm.permission

or

perm = User.Player.where(player_id = @player.id && user_id = current_user)

or

perm = User.players.where(player_id = @player.id && user_id = current_user)

这给出了未定义的方法错误。 未定义的方法“玩家”

我知道这在我的设置中是很小的事情,但无法弄清楚它是什么。任何帮助表示赞赏。


players_users and players与 User 对象关联,因此您可以将结果获取为,

current_user.players_users.pluck(:permission)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 Rails 访问 has_many 上的附加值 的相关文章

随机推荐