我在访问 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)
这给出了未定义的方法错误。
未定义的方法“玩家”
我知道这在我的设置中是很小的事情,但无法弄清楚它是什么。任何帮助表示赞赏。