Ассоциация не создана, после использования has_many - PullRequest
0 голосов
/ 16 февраля 2012
class User < ActiveRecord::Base
    has_many :microposts
end

class Mircopost < ActiveRecord::Base
    belongs_to :user
end

ActiveRecord::Schema.define(:version => 20120216035330) do

  create_table "mircoposts", :force => true do |t|
    t.integer  "user_id"
    t.string   "content"
    t.datetime "created_at"
    t.datetime "updated_at"
  end

  create_table "users", :force => true do |t|
    t.string   "name"
    t.datetime "created_at"
    t.datetime "updated_at"
  end

end

Я запускаю rake db: migrate, rails console и создаю поддельный user = User.create (: name => "abc")Однако он выдает «NameError: неинициализированная константа User :: Micropost», когда я запускаю user.microposts.empty ?.Поэтому я не совсем понимаю, почему эти методы генерируются автоматически.Заранее спасибо!

Ответы [ 3 ]

1 голос
/ 16 февраля 2012

вы хотите создать_таблицу "микросообщений"

не

create_table "mircoposts"

тогда

user.microposts

будет существовать

1 голос
/ 05 мая 2013

Я столкнулся с этим по другой причине.Я создал леса с именем «MicroPost», поэтому rails создали модель с именем micro_post.rb, а файл schema.rb - таблицу с именем «micro_posts».Вместо «has_many: microposts» мне пришлось использовать «has_many: micro_posts», затем в консоли использовать «first_user.micro_posts».Rails (или Ruby, не уверен, какой именно) автоматически вставил подчеркивание из-за второй заглавной буквы.

1 голос
/ 16 февраля 2012
has_many :microposts
class Mircopost < ActiveRecord::Base
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...