#ruby-on-rails #ruby-on-rails-3 #ruby-on-rails-3.1
#ruby-on-rails #ruby-on-rails-3 #ruby-on-rails-3.1
Вопрос:
У меня есть две модели, одна из которых называется BusinessUser, а другая — BusinessPlace. У бизнес-пользователя может быть много бизнес-площадок
class BusinessUser < ActiveRecord::Base
has_many :BusinessPlaces
end
class BusinessPlace < ActiveRecord::Base
belongs_to :BusinessUser
end
Когда я пытаюсь получить доступ к @business_user.BusinessPlaces.count sql, который получает сборку и запускается в БД, равен
SELECT COUNT(*) FROM "business_places" WHERE "business_places"."business_user_id" = 1
но при миграции и в базе данных столбец для идентификатора бизнес-пользователя — BusinessUser_id, что приводит к сбою запроса. Почему sql неправильно строится? Я использовал консоль для создания моделей.
Комментарии:
1. Как вы создавали модели? С
rails g ModelName
помощью ?2. С помощью rails g model BusinessUser
3. Люди, прекратите отвечать на вопросы такого рода и просто отправьте создателей вопросов в guides.rubyonrails.org Перестаньте тратить время даром.
Ответ №1:
Вам просто нужно установить foreign_key, для которого будет использоваться ассоциация :business_user
:
class BusinessUser < ActiveRecord::Base
has_many :business_places
end
class BusinessPlace < ActiveRecord::Base
belongs_to :business_user, :foreign_key => 'BusinessUser_id'
end
Комментарии:
1. Использование :foreign_key работает. Теперь мой класс выглядит так: class BusinessUser < ActiveRecord::Base has_many:BusinessPlaces , :foreign_key => ‘BusinessUser_id’ заканчивается на:business_user не работает
Ответ №2:
Вы используете неправильную формулировку для ключей. Ваши модели должны выглядеть так:
class BusinessUser < ActiveRecord::Base
has_many :business_places
end
class BusinessPlace < ActiveRecord::Base
belongs_to :business_user
end
поэтому в основном используйте:business_places вместо:BusinessPlaces
если вы используете миграции для настройки своих баз данных, вам не нужно изменять внешние ключи