在我的Rails(3.2)应用程序中,我的数据库中有一堆表,但我忘了添加一些非空约束.我已经google了但我找不到如何编写一个向现有列添加非null的迁移.
TIA.
我的意思是,如果我有两个模型,通过has_and_belongs_to_many关联连接,我可以将其他数据存储在每个关联的连接表中吗?也就是说,额外数据不会是任何一个表中单个记录的一部分,而是它们之间的连接.
我的实际模型如下:
class Part < ActiveRecord::Base
has_and_belongs_to_many :assemblies
has_and_belongs_to_many :packages
belongs_to :user
validates :name, :user_id, :presence => true
end
class Package < ActiveRecord::Base
has_and_belongs_to_many :parts
belongs_to :user
end
Run Code Online (Sandbox Code Playgroud)
所以重点是每个部件都有许多包装,每个包装都有不同的部件.我要添加的是数量.这不是每个部件的数量,而是每个部件的每个包装的数量.
我在ActiveRecord中找不到如何做到这一点.如果我没有使用rails/activerecord,我只需要在连接表中添加一个数量列,它将部件与包相关联.我显然可以在迁移中进行此更改,但是如何使用ActiveRecord访问该值?
我的rails应用程序中有一个User模型,如下所示
class User < ActiveRecord::Base
has_many :parts, dependent: :destroy
has_many :assemblies, dependent: :destroy
has_many :packages, dependent: :destroy
has_many :manufacturers, dependent: :destroy
//more code here
end
Run Code Online (Sandbox Code Playgroud)
我也有dependent: :restrict其他一些模特.
当我运行以下内容时rails console,我得到一个ArgumentError:
u = User.first
u.parts
Run Code Online (Sandbox Code Playgroud)
调用u.parts给出以下错误消息:
ArgumentError: Unknown key: dependent
from /home/david/.rvm/gems/ruby-1.9.3-p0/gems/activesupport-3.2.1/lib/active_support/core_ext/hash/keys.rb:44:in `block in assert_valid_keys'
from /home/david/.rvm/gems/ruby-1.9.3-p0/gems/activesupport-3.2.1/lib/active_support/core_ext/hash/keys.rb:43:in `each_key'
from /home/david/.rvm/gems/ruby-1.9.3-p0/gems/activesupport-3.2.1/lib/active_support/core_ext/hash/keys.rb:43:in `assert_valid_keys'
from /home/david/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.2.1/lib/active_record/associations/builder/association.rb:33:in `validate_options'
from /home/david/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.2.1/lib/active_record/associations/builder/association.rb:24:in `build'
from /home/david/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.2.1/lib/active_record/associations/builder/collection_association.rb:23:in `build'
from /home/david/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.2.1/lib/active_record/autosave_association.rb:139:in `build'
from /home/david/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.2.1/lib/active_record/associations/builder/has_and_belongs_to_many.rb:8:in `build'
from /home/david/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.2.1/lib/active_record/associations/builder/collection_association.rb:13:in `build'
from /home/david/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.2.1/lib/active_record/associations.rb:1600:in `has_and_belongs_to_many'
from /home/david/code/PartSorter/app/models/part.rb:5:in `<class:Part>'
from …Run Code Online (Sandbox Code Playgroud) ruby ruby-on-rails associations foreign-key-relationship ruby-on-rails-3
activerecord ×1
associations ×1
constraints ×1
database ×1
migration ×1
model ×1
notnull ×1
ruby ×1