したがって、次のモデルと関連付けを使用してアプリを作成しています。
class Company < ActiveRecord::Base
has_many :customers, :dependent => :destroy
has_many :goals, :dependent => :destroy
end
class Customer < ActiveRecord::Base
belongs_to :company
has_many :tasks
has_many :goals, through: :tasks
end
class Goal < ActiveRecord::Base
has_many :tasks, :dependent => :destroy
belongs_to :company
has_many :customers, through: :tasks
end
class Task < ActiveRecord::Base
belongs_to :goal
belongs_to :customer
end
ビューで、新しいタスクの form_for には既に選択された目標または顧客があり、他の関連付けの選択は、他のモデルに基づいてフィルター処理されたセットです。理論的には、ユーザーが 2 つの異なる会社 (@task.goal.company == @task.customer.company) の下でタスクを作成することは不可能です。
しかし、祖父母が 1 人しかいないことを確認するための検証を行うことは良い習慣のようです。特定の基準が満たされているかどうかを検証できる Proc.new を使用することは理解していますが、常に検証したいので、これは私が探しているソリューションではありません。
ありがとう。
ところで、モデル構造がばかげているように見えるかどうか、またはレールの慣習に対して明らかに何かをしたかどうかを教えてください。