Tag: 有很多

如何获得最高计数的关联模型(Rails)?

用户has_many解决方案 如何为拥有最多解决方案的用户订购用户? 我正在努力寻找十大用户,但我不确定如何做到最干净或最有效的方法呢? 有没有人有一个计算成本太高的例子?

嵌套表单显示错误

我有一个新幼儿园的以下表格声明 {:multipart => true} do |f|%> 这背后的逻辑是1个幼儿园可以有多张照片。 以下是模型声明: 幼儿园 has_many :photos, limit: 7, dependent: :destroy accepts_nested_attributes_for :photos 照片 attr_accessible :image, :logo, :kindergarten_id belongs_to :kindergarten mount_uploader :image, ImageUploader validates :kindergarten_id, presence: true validates :image, presence: true 以下是幼儿园控制器的样子: def new @kindergarten = Kindergarten.new @kindergarden.photos.build end 现在,当@kindergarten new生成时,我收到以下错误: undefined method ‘photos’ for nil:NilClass Application Trace | Framework Trace […]

has_many条件或proc对外键

我在两个模型之间有一个has_many关联,使用日期作为每个模型的外键和主键。 它完全可以单向工作,但不是另一种方式。 作品 has_one :quiz_log, :primary_key => :start_at, :foreign_key => :start_at 不起作用 has_many :event_logs, :primary_key => :start_at, :foreign_key => :start_at 原因是(我认为)因为QuizLog上的start_at是一个date而EventLog上的start_at是一个date 。 所以它返回nil试图匹配一个简单日期的确切日期时间。 如何在第二个语句上转换foreign_key start_at以将其从datetime首先转换为简单日期,以便它与第二个模型匹配?

has_many关系的每个最后元素的范围

假设我在User和Messages之间有一个has_many关系。 我想设置一个范围,以便能够通过他们发布的最后一条消息中的内容过滤用户。 所以只搜索每个用户的最后一条消息。 下面我得到了所有消息中的结果…… class Contact < ActiveRecord::Base has_many :messages scope :filter_by_last_messages, lambda { |value| joins(:messages).where("messages.content = ?", value) } end

Rails 3和update_attribute上的奇怪关系行为

我很难找到测试失败的原因: describe User, “Instance Methods” do describe “leave_group!” do it “should set group_id to nil” do @user = Factory(:user) @group_2 = Factory(:group, :owner => @user) @user.leave_group! @user.reload.group_id.should be_nil # THIS LINE IS FAILING!!! end it “should assign another owner to group, if owner was user” do @user = Factory(:user) @group = Factory(:group, :owner => @user) […]

rails 4 has_many:通过不保存关联

我有2个模型,有多对多关联如下: class User :destroy has_many :designated_remarks, :through => :remark_users, :source => :remark end class Remark :destroy has_many :users, :through => :remark_users accepts_nested_attributes_for :users end 和关系: class RemarkUser < ActiveRecord::Base belongs_to :remark belongs_to :user end 应该执行save的remarks_controller操作: # PATCH Save users def save_users @remark = Remark.find(params[:id]) @remark.users.build(params[:remark_user_ids]) @remark.save end forms: salveaza_responsabili_remark_path(@remark) do |f| %> Te remarks_controller: params.require(:remark).permit(:description, […]

在’has_many“到`关联上使用`find_or_create_by`时出错

我在has_many through关联使用find_or_create_by时遇到问题。 class Permission < ActiveRecord::Base belongs_to :user belongs_to :role end class Role :permissions end class User has_many :permissions has_many :roles, :through => :permissions end 当我在User对象的roles关联上调用find_or_create_by时,Rails会抛出错误。 u = User.first u.roles.find_or_create_by_rolename(“admin”) # Rails throws the following error # NoMethodError: undefined method `user_id=’ for # 我能够通过更改我的代码来解决此问题,如下所示: unless u.roles.exists?(:rolename => “admin”) u.roles << Role.find_or_create_by_rolename("admin") end 我很想知道find_or_create_by是否through关联与has_many工作。

何时保存has_many关系中的Active Record对象?

我正在使用Rails 1.2.3(是的,我知道)并且对于has_many如何在对象持久性方面起作用感到困惑。 为了举例,我将使用它作为我的声明: class User < ActiveRecord::Base has_many :assignments end class Assignment < ActiveRecord::Base belongs_to :user end 根据我的理解,这会生成一个方法User#assignments.build ,它创建一个Assignment对象,其user_id是接收实例的id (并且其他字段在参数中指定),但不保存此对象在数据库中。 稍后可以通过调用Assignment#save!保存该对象Assignment#save! 。 然而,我一直在使用作为教程和参考的实用程序员使用Rails的敏捷Web开发,第二版 ,说: 如果父对象存在于数据库中,则将子对象添加到集合会自动保存该子对象。 这里似乎有矛盾。 我想知道的是: 如果我执行some_user.assignments.build ,是否保存了Assignment对象? 如果我执行some_user.assignments << Assignment.new ,是否保存了Assignment对象? 如果我做some_user.assignments << Assignment.create ,是两个数据库调用,还是只有一个? 如果我在创建它之间修改Assignment对象并将其添加到some_user.assignments呢? 如果我save!会怎么样save! 一个Assignment对象,其对应的User尚未保存在数据库中? PS我之所以不仅仅使用User#assignments.create的原因是因为它不允许我将初始化扩展到外部方法,我希望能够做到这一点。 我也不想多次去数据库。

Rails has_many通过has_many与多个模型

模拟以下情况的最佳方法是什么: Word belongs_to :wordable, :polymorphic => true Phrase has_many :words, :as => :workable belongs_to :story Line has_many :words, :as => :wordable belongs_to :story Story has_many :lines has_many :phrases has_many :words, :through => :phrases has_many :words, :through => :lines 我希望能够做到 @story.words 获取通过线条或短语链接到故事的所有单词的列表… 那可能吗?

如何使用Ember Data&Rails在单个Ember.js表单中保留hasMany关联?

我在使用Ember.js,Ember Data和Rails确定使用单个表单保持hasMany关联的正确方法时遇到了麻烦。 客户有很多项目。 我有一个新的项目表单,有两个字段:项目名称和客户端名称。 http://cl.ly/image/3z0P0R3M1t2u 我试图将我的创建逻辑保留在Ember.js ClientsController和ProjectsController中 ,但我是否需要将其中一部分移动到我的ProjectsNewView上的提交操作中? 更新:我在发现此问题后更新了我的代码。 我越来越近了,但Rails ProjectsController仍然没有收到相关的client_id。 它不是控制器接收的参数的一部分。 我觉得我可能不是最好的方式。 楷模: 轨道 class Client true end class Project true validates :client, :presence => true end Ember.js App.Client = DS.Model.extend name: DS.attr(‘string’) projects: DS.hasMany(‘App.Project’, { embedded: true }) validate: -> if @get(‘name’) is null or @get(‘name’) is ” ‘Client requires a name.’ App.Project […]