製品を共有または提供するためのアプリを作成しようとしています。したがって、ユーザーと製品の2つのモデルがあります。ユーザーは、所有者または借用者として、多くの製品を持つことができます。製品の所有者は 1 人だけで、借り手は 1 人だけです。
最初に私はそのようなことをしました:
> rails generate model User name:string
class User
has_many :owned_products, class_name: "Product", foreign_key: "owner_id"
has_many :borrowed_products, class_name: "Product", foreign_key: "borrower_id"
end
> rails generate model Product name:string owner_id:integer borrower_id:integer
class Product
belongs_to :owner, class_name: "User", foreign_key: "owner_id"
belongs_to :borrower, class_name: "User", foreign_key: "borrower_id"
end
製品の所有者に対してのみ更新方法を有効にするセキュリティ フィルターを製品コントローラーに追加しました。しかし、製品の借用者を変更したい場合、借用者が所有者ではないため、製品を更新できないため、何らかの問題があります。
だから今、自分の製品に対するユーザーの更新アクションと、属していない製品を借りるためのユーザーの更新アクションを切り離すために、製品モデルからforeign_keyを取り出すべきではないかどうか疑問に思っています彼に...
> rails generate model User name:string
class User
has_many :properties
has_many :loans
has_many :owned_products, through: :properties
has_many :borrowed_products, through: :loans
end
> rails generate model Property owner_id:integer owned_product_id:integer
class Property
belongs_to :owner, class_name: "User", foreign_key: "user_id"
belongs_to :owned_product, class_name: "Product", foreign_key: "product_id"
end
> rails generate model Loan borrower_id:integer borrowed_product_id:integer
class Loan
belongs_to :borrower, class_name: "User", foreign_key: "user_id"
belongs_to :borrowed_product, class_name: "Product", foreign_key: "product_id"
end
> rails generate model Product name:string
class Product
has_one :property
has_one :loan
has_one :owner, through: :property
has_one :borrower, through: :loan
end
あなたはそれについてどう思いますか ?