Vì vậy, tôi biết làm thế nào để ghi đè lên thu khí mặc định cho các thuộc tính của một đối tượng sử dụng ActiveRecordray ghi đè getter mặc định cho một mối quan hệ (belongs_to)
def custom_getter
return self[:custom_getter] || some_default_value
end
Tôi đang cố gắng để đạt được điều tương tự tuy nhiên đối với một thuộc liên kết. Ví dụ.
class Foo < AR
belongs_to :bar
def bar
return self[:bar] || Bar.last
end
end
class Bar < AR
has_one :foo
end
Khi tôi nói:
f = Foo.last
Tôi muốn có phương pháp f.bar
trả lại Bar cuối cùng, chứ không phải là con số không nếu hiệp hội không tồn tại được nêu ra.
Điều này không hoạt động. Lý do là bản thân [: bar] luôn không xác định. Nó thực sự là bản thân [: bar_id].
tôi có thể làm điều gì đó ngây thơ như:
def bar
if self[:bar_id]
return Bar.find(self[:bar_id])
else
return Bar.last
end
end
Tuy nhiên điều này sẽ luôn thực hiện cuộc gọi db, ngay cả khi Bar đã được lấy, mà chắc chắn không phải là lý tưởng.
Có ai có thông tin chi tiết về cách tôi có thể có mối quan hệ sao cho thuộc tính depends_to chỉ được tải một lần và có giá trị mặc định nếu không được đặt.
Bạn không có một vòng lặp với điều đó? bởi vì thanh cuộc gọi trong thanh? – shingara
Không, bạn gọi "original_bar" là tên mới của "bar". –
hoạt động như một sự quyến rũ! Cảm ơn rất nhiều – brad