Моя пользовательская модель имеет три отношения для одной и той же модели сообщений и использует сырой SQL: / Есть ли лучший способ для достижения того же результата?
Может ли внешний ключ быть изменен динамически? например, User.messages.sent (внешний ключ = author_id) и User.messages.received (внешний ключ = получатель). Я пытался переместить часть логики в области в модели сообщений, но user.id недоступен из модель сообщения ...
Есть мысли?
Таблица раскладки:
create_table "messages", :force => true do |t|
t.string "subject"
t.text "body"
t.datetime "created_at"
t.datetime "updated_at"
t.integer "author_id"
t.integer "recipient_id"
t.boolean "author_deleted", :default => false
t.boolean "recipient_deleted", :default => false
end
Это мои отношения с моей моделью пользователя:
has_many :messages_received, :foreign_key => "recipient_id", :class_name => "Message", :conditions => ['recipient_deleted = ?', false]
has_many :messages_sent, :foreign_key => "author_id", :class_name => "Message", :conditions => ['author_deleted = ?', false]
has_many :messages_deleted, :class_name => "Message", :finder_sql => 'SELECT * FROM Messages WHERE
author_id = #{self.id} AND author_deleted = true OR
recipient_id = #{self.id} AND recipient_deleted = true'
С наилучшими пожеланиями.
Асбьерн Морелл