我们有三节课
class a
has_many :b
has_many :c, through: b
end
class b
belongs_to :a
belongs_to :c
end
class c
has_many :b
has_many :a, through: :b
validates_uniqueness_of :name
end
当我尝试创建类c的实例时,如果数据库中有两个类a的对象具有相同的name值,我惊讶地发现类c上的验证正在运行!当我根本不应该接触类c行时,为什么还要运行验证呢?
@max要求举个例子。
创建新的Rails 5项目后,请执
我对Rails活动记录协会有点陌生。我试图建立一种关系,但是当我试图检索数据时,我会得到ActiveRecord错误。我把我的模特记错了吗?
用户有许多上传,其中有许多UserGraphs:
class User < ActiveRecord::Base
has_many :uploads, through: :user_graphs
end
class Upload < ActiveRecord::Base
has_many :users, through: :user_graphs
end
class UserGraph < ActiveRecord::Bas
通过就业和面试联系个人和公司会不会是不好的做法?为什么,特别是?这个答案是否适用于一般的数据库,而不仅仅是rails?
示例:
employment.rb
class Employment < ActiveRecord::Base
belongs_to :people
belongs_to :companies
end
interview.rb
class Interview < ActiveRecord::Base
belongs_to :people
belongs_to :companies
end
person.rb
class Person
我的rails应用程序中有多个模型
class SnapshotReport < ActiveRecord::Base
establish_connection "evercam_db_#{Rails.env}".to_sym
belongs_to :camera
def self.add_report
camera_report = Snapshot.connection.select_all("select camera_id,count(*) as snapshot_count from snapshots where created
我想从comment.rb之外的其他位置向我的Comment类添加一个关联,例如在初始化器中。类似于:
# in config/initializers/comment_setup.rb
class Comment < ActiveRecord::Base
has_many :replies
end
但是当我尝试这样做(rails 2.3.4)时,我得到一个错误,即has_many关联不存在。
从app/models/blah.rb以外的位置重新打开ActiveRecord类的最佳方法是什么
我试图在Server和Report之间建立一种关系。Server模型has_many :reports。
Server模型具有以下属性
id
game_server_id
名字
Report模型具有以下属性
id
game_server_id
安装
我面临的问题是如果我做以下事情
class Server < ActiveRecord::Base
has_many :reports
end
Server.first.reports
Rails将尝试根据server_id模型中的Report字段将服务器与其报表匹
rails g model Article name:string
rails g model Category name:string
rails g model Tag name:string taggable_id:integer taggable_type:string category_id:integer
我已经创建了模型,如前面的代码所示。文章将是众多可以有标签的模型中的一个。类别模型将包含可以分配的所有类别。标记模型将是一个表示标记关系的多态连接表。
class Article < ActiveRecord::Base
has_many :tags, :as =>
当我在Rails应用程序上运行一个rspec测试文件时,除了对has_many关联的测试之外,一切都通过了:
it { should have_many(:notes) } # ERROR
it { should belong_to(:agent_field_set) } # OK
it { should have_and_belong_to_many(:profiles) } # OK
should have_many(:notes)行将引发ArgumentError: wrong number of arguments (0 for 1)。我检查了我的数据库和模型文件以验证has_many
从Rails 3.2升级到4.1之后,下面的代码现在失败了:
在控制器/规范中:
post = user.posts.build
post.contacts << contact # contact is a persisted record
post.save! # now fails
我基本上是想保存帖子和它的相关联系人,这应该是创建一个contact_publishment记录的动态。错误出现在新的contact_publishment记录上:“可发布不能为空白”
模式:
class Contact
...
has_many :contact_publishments
我有一个rails 5项目,我从一月份开始就在做这个项目,今天我注意到我可以在不指定父记录的情况下创建子记录。这相当令人担忧,因为我验证了我使用的是rails 5.1.2和ruby 2.4.1。该网站仍在开发中。我打开了rails控制台,并测试了我的一些其他模型,它们应该有父验证(在rails 5中应该是默认的验证),这些记录也是在没有关联的情况下创建的。
这没有任何意义。我确实知道这在某种程度上是有效的。最大的变化发生在本周早些时候,我在gem中添加了用于文件上传的“回形针”。对于要检查的内容,有人有什么建议或想法吗?
class Order < ApplicationRecord
我有一个Rails应用程序,我最近更新为rails 5。我有一个数据模型,看起来像这样(简化):Users可以有很多Apps,Users也可以是多个Team的Member,每个Team也可以有多个App。在App的索引视图/控制器中,我想列出他/她创建的所有用户应用程序,我还想列出所有属于Team的应用程序,Users是Member of。
我觉得有一种比我目前的实现更好、更有表现力的方法(可能是Rails 5中的一些新东西)。我当前的实现是这样的:
apps = []
# First get all the team apps where the user is a member, but
我在Rails中找不到任何关于.build方法的文档(我目前使用的是2.0.2)。
通过实验,您似乎可以使用build方法在保存任何一条记录之前将记录添加到has_many关系中。
例如:
class Dog < ActiveRecord::Base
has_many :tags
belongs_to :person
end
class Person < ActiveRecord::Base
has_many :dogs
end
# rails c
d = Dog.new
d.tags.build(:number => "123456")
d.