: включить поиск с неправильным значением - PullRequest
0 голосов
/ 14 сентября 2011

У меня есть несколько моделей в проекте Rails, которые связаны с пользователем, и я столкнулся с проблемой загрузки. Я пытаюсь отобразить все данные пользователя на странице.

Мои объявления моделей выглядят примерно так:

class User < ActiveRecord::Base
  validates_presence_of :server_user_id
  has_many :setup_notes, :foreign_key => "server_user_id"
  has_many :closure_votes, :foreign_key => "user_id"
end

class SetupNote < ActiveRecord::Base
  belongs_to :user, :foreign_key => "server_user_id"
end

Следует отметить, что в таблице SQL для голосов закрытия, user_id - это то же значение, что и server_user_id в таблице для пользователей.

Когда я пытаюсь использовать символ :include в запросе Rails, он заканчивается использованием user.id в качестве значения для поиска, когда мне нужно найти закрывающие голоса и настроить примечания через user.server_user_id. Другими словами,

me = User.first(:conditions => ["server_user_id = ?", 12610], :include => :setup_notes)

создает запрос MySQL

SELECT `setup_notes`.* FROM `setup_notes` WHERE (`setup_notes`.server_user_id = 1)

Который возвращает пустой набор. Есть ли способ отформатировать запрос / модели Rails для отправки соответствующего запроса SQL, или мне нужно написать необработанный запрос для всех моделей, связанных с пользователями (и если это так, как мне это сделать?)

Спасибо!

1 Ответ

0 голосов
/ 14 сентября 2011

Если я правильно понимаю (у этого пользователя есть поле server_user_id), в модели пользователя вы должны установить параметр: primary_key следующим образом:

class User < ActiveRecord::Base
  validates_presence_of :server_user_id
  has_many :setup_notes, :foreign_key => "server_user_id", :primary_key => "server_user_id"
  has_many :closure_votes, :foreign_key => "user_id", :primary_key => "server_user_id"
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...