我有一个应用程序,目前是Rails 3.0.9版本,具有非常简单的多对多关系:
class User < ActiveRecord::Base
has_and_belongs_to_many :stores, :join_table => "users_stores"
end
我发现下面这个警告信息不断弹出:
警告:在 has_and_belongs_to_many 关联的连接表上添加附加属性已经过时,将在 Rails 3.1 中删除,请改用 has_many :through 关联。
问题是,我没有在连接表上添加任何额外的属性:
sqlite> .schema users_stores
CREATE TABLE "users_stores" ("user_id" integer, "store_id" integer);
在Rails 3.1中,has_and_belongs_to_many是否完全被弃用了?我尝试升级到3.1,但我使用了一些尚未更新的gems,所以我还需要等待一段时间,但理想情况下,我希望我的代码能够正常运行。
habtm
被弃用了,还是额外的属性?Rails指南只说额外的属性被弃用了,而不是habtm
本身。不过我可能理解有误。 - Dave Newtonhabtm
并没有过时,官方的Rails指南仍然推荐使用它:http://guides.rubyonrails.org/association_basics.html#choosing-between-has_many-through-and-has_and_belongs_to_many - 因此不需要重构,我也没有收到任何弃用警告。 - iGEL