尝试播种has_many / belongs_to关系。 用户has_many脚本,脚本属于用户。
播种脚本时,我收到此错误:
ActiveModel :: UnknownAttributeError:未知属性' user_id'对于 脚本。
我认为迁移中的这一行会为脚本创建user_id属性吗?
t.belongs_to :user, index: true, foreign_key: true
应用程序/模型/ script.rb
class Script < ApplicationRecord
belongs_to :user
has_many :commits
has_many :script_users, through: :commits, source: :user
end
应用程序/模型/ user.rb
class User < ActiveRecord::Base
has_many :scripts
has_many :used_scripts, through: :commits, source: :script
has_many :commits
end
分贝/迁移/ 20171231022826_create_scripts.rb
class CreateScripts < ActiveRecord::Migration[5.1]
def change
create_table :scripts do |t|
t.string :name
t.string :skill
t.string :bot_for
t.string :game_for
t.belongs_to :user, index: true, foreign_key: true
t.timestamps
end
end
end
分贝/ seeds.rb
admin = User.create!(
email: 'a@a.com',
password: 'adminadmin',
password_confirmation: 'adminadmin'
)
script = Script.create!(
name: 'YWoodcutter',
skill: 'Woodcutting',
bot_for: 'Android',
game_for: "CandyLand,
user_id: admin.id
)
ActiveModel :: UnknownAttributeError:未知属性&#39; user_id&#39;对于 脚本。 我已确保rake:db reset并仍然出错。
谢谢
更新
我做了一些事情,现在工作正常。我认为问题可能是我的脚本迁移后创建了用户迁移。用户迁移应该在脚本之前完成,因此我更改了日期以更改它们迁移的顺序。是否有rake rake db:rollback&amp; db:重置也是好的措施。
答案 0 :(得分:1)
userBasicInformation
是belongs_to
的别名,它应与reference
如果它不起作用,请尝试使用以下解决方案
references
答案 1 :(得分:0)
使用以下行创建模型
mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
@Override
public void onMapClick(final LatLng point) {
if (PolyUtil.isLocationOnPath(point, finalPolylines.getPoints(), true)) {
// user clicked on polyline
Toast.makeText(getContext(), "found", Toast.LENGTH_SHORT).show();
Log.d("found", "onMapClick: found");
}
}
});
默认情况下,它会在迁移文件中的行下面
while (*(arg_to++) = *(arg_from++));
并在脚本模型中添加rails g model script references:user
。导轨5中的t.references :user, foreign_key: true
可能不是belongs_to :user