سؤال

صباح الخير جميعا،

لدي ارتباط أعمل عليه ، ولسبب ما ، لا يمكنني الحصول عليها لحفظ التغييرات على الكائن المعني عندما أقوم بتصحيحه في IRB. كنت أتساءل عما إذا كان أي شخص يمكن أن يشير إلى مشكلتي.

ها هي الجمعية:

class User < ActiveRecord::Base
  has_and_belongs_to_many :affiliates
  has_one :managed_affiliate, :class_name => "Affiliate", :foreign_key => "manager_id"
end

class Affiliate < ActiveRecord::Base
  has_and_belongs_to_many :users
  belongs_to :manager, :class_name => "User"
  #The affiliates table has a foreign key field of manager_id
end

عندما أقوم بإطلاق IRB ، يمكنني الحصول على مستخدم. يمكنني ضبط المستخدم المدير _affiliate على ما يرام. ومع ذلك ، عندما أنقذ ، لا ينعكس ذلك على الإطلاق في التابعة - ليس له مدير. وبالمثل ، يمكنني تعيين مدير التابعة على ما يرام (Affiliate.first.manager = user.first). يعود مثل كل شيء على ما يرام ، ولكن عندما أذهب لحفظه ، ببساطة يعيد "خطأ". إذا قمت بتنشيط وظيفة تسجيل IRB ، فهذا هو الإخراج:

SQL (0.1ms)   BEGIN
SQL (0.2ms)   ROLLBACK

هل هناك أي سبب واضح لعدم توفير هذه الارتباط بشكل صحيح؟

أيضا ، هنا مخطط لجدول الشركات التابعة:

create_table "affiliates", :force => true do |t|
    t.string   "name"
    t.string   "website"
    t.integer  "market_id"
    t.datetime "created_at"
    t.datetime "updated_at"
    t.string   "logo_file_name"
    t.string   "logo_content_type"
    t.integer  "logo_file_size"
    t.boolean  "track_subs"
    t.integer  "manager_id"
  end

شكرا لك على أي مساعدة.

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

المحلول

ActiveRecord::Base#save سيعود خطأ في حالة فشل التحقق أو إن وجد before_* عمليات الاسترجاعات على النموذج تُرجع False.

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