سؤال

ونظرا لما يلي:

وFoo has_many :bars, :through => :baz

و

وFoo accepts_nested_attributes_for :bar

وأريد أن تفعل find_or_create_by_name عندما أضيف :bar جديد، ولكن أنا لا أعرف أين أنا يمكن أن يكون نوعا من وظائف before_add.

وعلى خلفية هذا السؤال هو Bar validates_uniqueness_of :name، الذي يعطي أخطاء عند محاولة إنشاء Foo الجديد الذي يستخدم Bar القائمة.

هل كانت مفيدة؟

المحلول

ونجاح باهر يجب أن أكون متعب:

class Foo < ActiveRecord::Base
  has_many :bars, :through => :baz, :before_add => :some_callback

  def some_callback(b)
    #whatnot
  end
end

ولكن لا يزال، في الجزء some_callback، ماذا تفعل؟ لقد حاولت أشياء مثل b = Bar.find_or_create_by_name(b.name) ولكن هذا لا تعمل إما.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top