Rails 3.2.11 MySql2 Gem
こんにちは、誰かが私のfindメソッドが間違ったタイプのactiverecordを返す理由を知っていますか?
モデルは次のとおりです。
class NameList < ActiveRecord::Base
attr_accessible :name, :selected, :type
self.table_name='name_lists'
end
コンソール出力は次のとおりです。
>> k=NameList.find(28)
NameList Load (0.0ms) SELECT `name_lists`.* FROM `name_lists` WHERE `name_lists`.`id` = 28 LIMIT 1
#<Neighborhood id: 28, name: "Bayview">
>> k.class
Neighborhood(id: integer, city_id: integer, name: string, street_count: integer, relative_value: float, home_count: integer, min_lot_size: integer, created_at: datetime, updated_at: datetime)
NameList.findを呼び出していますが、返されるのはNeighborhoodオブジェクトです。奇妙なことに、SQLは正しいように見えます-NameListテーブルのクエリです。
Neighborhoodオブジェクトについて特に特別なことは何もありません。そのためのモデルは次のとおりです。
class Neighborhood < ActiveRecord::Base
belongs_to :city
has_many :streets
attr_accessible :name, :relative_value, :street_count
def self.make(name, relative_value, min_lot_size, street_count, home_count)
n=Neighborhood.new
n.name = name
end
end
ただし、保存しようとすると、Neighborhoodのスキーマの定義が使用され、間違ったテーブルが更新されます。
> k.name = "Foo"
"Foo"
>> k.save
(1.0ms) BEGIN
(0.0ms) UPDATE `neighborhoods` SET `name` = 'Foo', `updated_at` = '2013-03-14 17:40:46' WHERE `neighborhoods`.`id` = 28
(0.0ms) COMMIT
true
何か案は?