Tag: 关联

我应该如何将alias_method_chain用于构建方法?

我正在使用Ruby on Rails 3.2.13,我想正确使用alias_method_chain :build, :option_name语句,因为我收到一个奇怪的错误。 那是, … …在我的控制器文件中我有: class Articles::CommentsController < ApplicationController def create @articles_comment = @article.comments.build(params[:comment]) … end end …在我的模型文件中我有: class Articles::Comment < ActiveRecord::Base def self.build_with_option_name … end alias_method_chain :build, :option_name end 当我运行create控制器操作时,我在日志中收到以下错误: ActionController::RoutingError (undefined method `build’ for class `Articles::Comment’): app/models/articles/comment.rb:5:in `’ 我应该如何将alias_method_chain用于build方法? 或者,也许更好,我应该以另一种方式来达到我想要做的事情(例如,我应该覆盖Articles::Comment模型中的build方法而不是使用alias_method_chain )吗? 注意I :我不知道它是否有帮助,但build方法是指一个关联( @article.comments )。 更多,我没有在Articles::Comment模型中声明build方法,因为它应该由Ruby on Rails框架本身“添加”/“附加”到类(我认为它是通过元编程实现的)。 注2 […]

如何在Rails中自动完成HABTM管理?

我正在寻找一个很好的解决方案,用于在Rails中管理具有HABTM关联的模型的典型问题。 我们假设我们有两个模型 – 产品和类别: Products has_many :categorizations has_many :categories, :through => :categorizations Categories has_many :categorizations has_many :products, :through => :categorizations Categorization belongs_to :product belongs_to :category Pat Shaughnessy正在开发修改后的auto_complete插件 ,它可以管理一对多(和多对多)关联: alt text http://img28.imageshack.us/img28/9141/samplef.th.png 替代文字http://img406.imageshack.us/img406/4075/sampleautocomplete.th.png 对于那些足够的人,但我并不喜欢这么多文本字段。 我想有可能将Pat使用的Ryan Bates的截屏结构略有不同,即使用一个带自动完成的文本字段 : 替代文字http://img405.imageshack.us/img405/9576/betterautocomplete.th.png 此外,最好从已添加的建议任务列表(一对多)或产品类别(多对多)中删除 。 在产品类别关系的情况下,这种自动完成将以产品的forms和类别的forms使用。 我希望有一个现有的插件。 我在Ruby方面不是很有经验,也不知道如何自己实现这样的逻辑。 任何帮助表示赞赏!

has_and_belongs_to_many关系的自定义活动管理表单输入

我有一个非常简单的模型 class Lifestyle < ActiveRecord::Base attr_accessible :name has_and_belongs_to_many :profiles end 与Profile有has_and_belongs_to_many关系 class Profile < ActiveRecord::Base attr_accessible … belongs_to :occupation has_and_belongs_to_many :lifestyles accepts_nested_attributes_for :lifestyles end 我想使用ActiveAdmin编辑Profile对象,但也将Lifestyles分配给配置文件。 它应该类似于处理belongs_to :occupation Occup,因为它由ActiveAdmin自动整理到一个预先填充了可用职业的选项的dropbox。 我曾尝试使用has_many表单构建器方法,但这只是让我显示一个表单来输入生活方式的名称,并在提交时,它返回了一个错误。 f.object.lifestyles.build f.has_many :lifestyles do |l| l.input :name end 我得到的错误: Can’t mass-assign protected attributes: lifestyles_attributes 对我来说,最好的方法是构建几个复选框 ,一个用于DB中的每个Lifestyle。 选择表示生活方式连接到配置文件,未选择意味着删除关系。 我非常怀疑使用ActiveAdmin可以实现这一点,并且无需创建非常复杂的逻辑来处理这个问题。 如果你提出你的意见并告诉我是否应该采用这种方式或采用不同的方法,我将非常感激。

Rails中的多态关联

多态关联如何在Rails中运行? 它们的优点是什么? 有没有办法只通过运行迁移添加belongs_to方法?

是否可以使用范围作为与simple_form关联的源?

是否可以使用范围作为关联来源? class User < AR scope :active_users, where('status = 4') … # form …

Has_Many通过关联和嵌套属性

我正在尝试创建一个视图,允许我直接创建和编辑我的连接表的值。 这种模式被称为“雇佣”。 我需要能够在我的加入表中创建多行,以便孩子最多可以雇佣2本书。 我遇到了一些麻烦,我怀疑这取决于我的协会…… 我有3个型号。 每个孩子可以有2本书: class Child < ActiveRecord::Base has_many :hires has_many :books, through: :hires end class Hire < ActiveRecord::Base belongs_to :book belongs_to :child accepts_nested_attributes_for :book accepts_nested_attributes_for :child end class Book < ActiveRecord::Base has_many :hires has_many :children, through: :hires belongs_to :genres end 控制器看起来像这样: class HiresController < ApplicationController … def new @hire = Hire.new 2.times […]

将模型中的多个输入字段转换为模型中的一个整数属性

我试图允许用户在同一表单的两个不同的下拉菜单中输入两个不同的东西,它会将一个整数存储到一个评论表中。 我希望用户能够在一个下拉列表中选择model_name ,在另一个下拉列表中选择manufacturer 。 结果将bat_id整数存储到表单中。 (告诉你用户选择哪种蝙蝠) 我已经看到了几个关于日期和时间的问题,但是它们将值直接存储在模型中。 我试图存储一个整数 – bat_id以便bat_id将审查模型直接链接到bat模型。 我发现的例子很接近: ruby on rails多参数属性如何真正起作用(datetime_select) 将多个字段Rails转换为一个模型属性 为一个属性使用多个输入字段 Rails使用多个字段更新单个属性 我的表格现在: Select Brand Select Bat What do you like about this bat? What do you not like about this bat? 我正在提交review表并尝试将这两个提交到bat_id属性。 Select Brand Select Bat 在我的蝙蝠模型中我有: has_many :reviews &在我的评论模型中我有: belongs_to :bat 更新:是否可以使用javascript和我的两个输入组合的隐藏字段来确定我的一个输出bat_id? 更新我更改了我的下拉代码,以便在选中两者时输入manufacturer_id和bat_id 。 但是我仍然认为有一种方法可以在我的review模型中存储一个值。 我使用的javascript非常类似于此

rails模型范围中的关联数据

我有一个名为Post (博客文章)的模型和一个名为Category的模型。 每个postbelongs_to一个类别。 每个类别都有一个名为retainer的属性,用于指定post“过期”之前的时间量,例如movies_category.retainer = 30.days 我要做的是为Post创建一个范围,找到所有“过期”的post。 因此,例如,假设我要对30.days的值进行硬编码并且它适用于所有类别(因此所有post),范围将是: scope :expired, lambda { where(“posts.created_at < ?", 30.days.ago) } 但是,我没有对值30.days.ago进行硬编码,而是希望从post的类别中获取retainer值,并根据该条件确定条件,例如: scope :expired, lambda { where(“posts.created_at < ?", Time.now – post.category.retainer) } 所以说得好:我希望获得所有过期的post,并且过期状态由每个post的类别的保留值确定(即电影类别中的post在10天后到期,游戏类别中的post在5天后到期等) 这有可能吗? 我需要某种forms的加入吗?

ruby on rails has_many:通过关联,其中有两列具有相同的模型

我有以下型号: class UserShareTag “User” belongs_to :post belongs_to :sharee, :class_name => “User” validates :sharer_id, :presence => true validates :sharee_id, :presence => true validates :post_id, :presence => true end 在Post模型中,我有以下几行: has_many :user_share_tags, :dependent => :destroy has_many :user_sharers, :through => :user_share_tags, :uniq => true, :class_name => “User” has_many :user_sharees, :through => :user_share_tags, :uniq => true, :class_name => “User” […]

通过多个级别的Rails关联

我对Rails相对较新,正在开发一个涉及多个“嵌套”数据级别的项目。 我在制定正确的关联方面存在问题,因此我可以将模型的所有子元素提高3级。 以下是模型的示例: class Country < ActiveRecord::Base has_many :states end class State < ActiveRecord::Base belongs_to :country has_many :cities end class City < ActiveRecord::Base belongs_to :state has_many :people end class Person < ActiveRecord::Base belongs_to :city end 我已经在Country模型中实现了一个关系, has_many :cities, :through => :states并且尝试调用Country.first.cities.all ,这有效。 但是,当我在People控制器中尝试Country.first.cities.all.people.all时,我在访问给定国家/地区的所有人时遇到问题。 处理这种关联情况的最佳方法是什么? 我应该为每个子表添加一个外键,例如country_id ,以便我可以获取一个Country所有People ? 任何建议,将不胜感激。