Обычным Rails путь структурирования этой ассоциации будет иметь столбец :source_id
в модели User, чтобы вы могли получить связанные записи, например, следующим образом:
class User < ActiveRecord::Base
belongs_to :source
end
class Source < ActiveRecord::Base
has_many :users
end
@source = Source.find_by_name('IBM') # assumes that the IBM value is stored in the :name column
# => #<Source id: 123, name: "IBM">
@users = @source.users
# => [#<User id: 456, source_id: 123>, #<User id: 457, source_id: 123>]
# or...
@users = User.where(source_id: @source.id)
Но если у вас нет настройки столбцов по умолчанию для сопоставления записей с идентификационными столбцами в базе данных, вам необходимо указать, какие столбцы использовать для вызова. Например:
class User < ActiveRecord::Base
belongs_to :source, primary_key: 'name', foreign_key: 'u_company'
end
class Source < ActiveRecord::Base
has_many :users, primary_key: 'name', foreign_key: 'u_company'
end
приведенный выше пример еще раз предполагает, что название источника хранится в :name
колонке.
@source = Source.find_by_name('IBM') # assumes that the IBM value is stored in the :name column
# => #<Source id: 123, name: "IBM">
@users = @source.users
# => [#<User id: 456, u_company: "IBM">, #<User id: 457, u_company: "IBM">]
Если вы хотите больше деталей, то вы должны дать более подробную информацию о том, как ваши данные структурированы и как связать их вместе.
Спасибо, ваше решение работает для меня –