Ruby on rails Rails 4-专家和协会
我正在尝试用Rails 4制作一个应用程序 我用的是博学和设计 我正试图用权威的语言写一份施政报告 我有三个相关的模型,分别是user.rb、profile.rb和address.rb 这些协会是: user.rbRuby on rails Rails 4-专家和协会,ruby-on-rails,devise,associations,polymorphic-associations,pundit,Ruby On Rails,Devise,Associations,Polymorphic Associations,Pundit,我正在尝试用Rails 4制作一个应用程序 我用的是博学和设计 我正试图用权威的语言写一份施政报告 我有三个相关的模型,分别是user.rb、profile.rb和address.rb 这些协会是: user.rb has_one :profile profile.rb belongs_to :user has_many :addresses, as: :addressable address.rb belongs_to :addressable, :polymorphic =>
has_one :profile
profile.rb
belongs_to :user
has_many :addresses, as: :addressable
address.rb
belongs_to :addressable, :polymorphic => true
我的施政方针是:
class AddressPolicy < ApplicationPolicy
def create?
user.present? && user == address.profile.user
end
def update?
user.present? && user == address.profile.user
end
def destroy?
user.admin?
end
private
def address
record
end
end
信息是:
undefined method `profile' for #<Address:0x007fbad7ac0cf8>
有人知道怎么做吗?您可以检查用户的地址是否包括以下地址:
user && user.profile.addresses.exists?(address.id)
你好-谢谢普拉梅纳。这是有效的,在这项工作的最后(address.id)是什么?为什么这项工作在create操作中有效?用户添加新地址时没有地址?您好。方法“exists?”采用id或条件-以下是文档:。您可以使用它只允许地址的所有者编辑它。创建地址的限制是什么?不是“user.present?”够了吗?我希望拥有该地址的用户能够创建/更新/销毁。您可以允许具有特定地址的用户创建新地址,但如果您希望允许没有地址的用户创建新地址,则应仅检查该用户是否存在或其他业务规则。也许我遗漏了一些东西,但地址在创建之前没有所有者。
class ApplicationPolicy
attr_reader :user, :record
def initialize(user, record)
@user = user
@record = record
end
user && user.profile.addresses.exists?(address.id)