小编Dav*_*son的帖子

Ruby on Rails:如何使用迁移向现有列添加非空约束?

在我的Rails(3.2)应用程序中,我的数据库中有一堆表,但我忘了添加一些非空约束.我已经google了但我找不到如何编写一个向现有列添加非null的迁移.

TIA.

database migration ruby-on-rails constraints notnull

124
推荐指数
3
解决办法
4万
查看次数

Rails:是否可以为has_and_belongs_to_many关联添加额外的属性?

我的意思是,如果我有两个模型,通过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访问该值?

activerecord model ruby-on-rails has-and-belongs-to-many

19
推荐指数
2
解决办法
9495
查看次数

Rails依赖:: destroy导致ArgumentError

我的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

2
推荐指数
1
解决办法
1977
查看次数