Как я могу создать соединение без кода SQL в рельсах? - PullRequest
0 голосов
/ 24 января 2011

Я не могу присоединиться к рельсам, я не знаю, что здесь не так. мои занятия:

class Serie < ActiveRecord::Base<br> has_many :user_serie<br> has_many :user, :through => :user_serie<br> end

class UserSerie < ActiveRecord::Base<br> belongs_to :serie<br> belongs_to :user<br> end и

class User < ActiveRecord::Base<br> has_many :user_serie<br> has_many :serie, :through => :user_serie<br> end

и выбор: @series = Serie.all :joins => :user

, поэтому сгенерированный выбор:

SELECT "series".* FROM "series" 
INNER JOIN "user_series" ON "series"."id" = "user_series"."serie_id" 
INNER JOIN "users" 
 ON 0 
 AND "users" 
 AND 'id' 
 AND "users"."id" 
 AND 0 
 AND "user_series" 
 AND 'user_id'
 AND "user_series"."user_id" 
 AND "users"."id" = "user_series"."user_id"

Что я могу сделать, чтобы этот выбор работал?

Я пытался создать has_many с множественным числом, но затем у меня есть эта ошибка: неинициализированная константа Serie :: UserSeries

1 Ответ

0 голосов
/ 24 января 2011

У вас неправильные отношения, должно быть:

class Serie < ActiveRecord::Base
has_many :user_series
has_many :users, :through => :user_series
end

class UserSerie < ActiveRecord::Base
belongs_to :serie
belongs_to :user
end

class User < ActiveRecord::Base
has_many :user_series
has_many :series, :through => :user_series
end 

Когда вы получаете исключение с неинициализированным классом, используйте явное: имя_класса, как показано ниже:

class Serie < ActiveRecord::Base
has_many :user_series, :class_name => "UserSerie" 
# or "::UserSerie", i'm not 100% sure which one, rather just as I wrote
has_many :users, :through => :user_series
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...