我不明白为什么会收到错误:
could not find table libraryusers10s
在下面的代码中,我定义了两个表library_users10
和library_books10
,并将它们与类关联。
以下代码可以正常使用:
require 'active_record'
ActiveRecord::Base.establish_connection(
:adapter => "sqlite3",
:database => "library8")
ActiveRecord::Schema.define do
create_table :library_users10 do |table|
table.column :user_id, :integer
table.column :name, :string
table.column :age, :string
table.column :books_borrowed, :integer
end
create_table :library_books10 do |table|
table.column :books_id, :integer
table.column :borrower_id, :integer
table.column :title, :string
table.column :borrowed, :string
table.column :due_back, :string
end
end
class LibraryUsers10 < ActiveRecord::Base
has_many :library_books9s
end
class LibraryBooks10 < ActiveRecord::Base
belongs_to :library_users10s
end
但是当我尝试填充表格时,通过在脚本中添加以下代码,我收到错误could not find table libraryusers10s
libraryusers10 = LibraryUsers10.create(:user_id => 1, :name => 'Tom', :age => 10, :books_borrowed => 3 )
libraryusers10.library_books10.create(:borrower_id => 1, :title => 'Who let the dogs out?', :borrowed => '13_November_2013', :due_back => '21_November_2013' )
有没有人对这里出了什么问题有任何建议?
感谢您的帮助。
答案 0 :(得分:2)
Rails约定用于表名复数
create_table :library_users10s do |table|
...
create_table :library_books10s do |table|
...
会为你解决问题。
如果你不能这样做,那么你可以在你的模型中添加一个修改器来跳过这样的变形器:
class LibraryUsers10 < ActiveRecord::Base
self.table_name = 'library_users10'
...
答案 1 :(得分:1)
我可以猜到的是因为Class的末尾有'S'。例如:
Person.all查询人员表。
我想如果你在创建表时添加's',它应该可以工作。
create_table :library_users10s
和
create_table :library_books10s
它应该有用。