我正在努力确保我的Rails应用程序能够安全地构建关联,而我不确定如何处理我通过另一个模型“拥有”模型的情况。
一个例子是我是一个有十几岁女儿的父亲。他们拥有一些苹果产品。产品在技术上属于他们,但我付出了所有 - 我拥有它。
此外,我不想让陌生人给我的女儿们新的苹果产品。
这个代码如下:
class Father
has_many :teenage_daughters
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
end
class TeenageDaughter
belongs_to :father
accepts_nested_attributes_for :apple_products,
reject_if: :all_blank,
allow_destroy: true # oh yeah
end
class AppleProduct
belongs_to :teenage_daughter
# Should i be doing something like this?
# belongs_to :father
end
我的问题是:
我是否应该在belongs_to
内向父亲添加AppleProduct
关系,并且每当我创建AppleProduct
时,我设置current_user
?
我担心会犯错,并以某种方式允许精心设计的请求允许人们将行与不属于他们的用户帐户关联/取消关联。
答案 0 :(得分:2)
让我引用你说过的话:
我为此付出了一切 - 我拥有它
这意味着c(18, 17)
模型代表父亲拥有的资产,而你让某人(在这种情况下是孩子)使用它。在我看来,这是一个更接近现实生活模式的方式:
AppleProduct
通过这样做,您可以明确表示这些产品的class Father
has_many :apple_products
has_many :teenage_daughters
end
class TeenageDaughter
belongs_to :father
end
class AppleProduct
belongs_to :owner, class_name: 'Father'
belongs_to :user, class_name: 'TeenageDaughter'
end
和owner
是谁。
此外,与您的问题无关,但请考虑将名称从user
更改为TeenageDaughter
。