小编ton*_*all的帖子

如何通过关联在has_many中使用回调?

我有一个通过has_many通过项目模型关联的任务模型,需要在通过关联删除/插入之前操作数据.

由于" 自动删除连接模型是直接的,因此不会触发销毁回调. "我无法使用回调.

在任务中,我需要所有project_ids在保存任务后计算Project的值.如何通过关联禁用删除或更改删除以销毁has_many?这个问题的最佳做法是什么?

class Task
  has_many :project_tasks
  has_many :projects, :through => :project_tasks

class ProjectTask
  belongs_to :project
  belongs_to :task

class Project
  has_many :project_tasks
  has_many :tasks, :through => :project_tasks
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails callback has-many-through ruby-on-rails-3

23
推荐指数
1
解决办法
1万
查看次数

是否可以使用可选参数作用域?

是否可以使用可选参数编​​写一个范围,以便我可以使用和不使用参数调用范围?

就像是:

scope :with_optional_args,  lambda { |arg|
  where("table.name = ?", arg)
}

Model.with_optional_args('foo')
Model.with_optional_args
Run Code Online (Sandbox Code Playgroud)

我可以检查lambda块是否给出arg(如Unixmonkey所描述)但是在调用范围时没有参数我得到了 ArgumentError: wrong number of arguments (0 for 1)

activerecord scope ruby-on-rails ruby-on-rails-3

22
推荐指数
4
解决办法
1万
查看次数

是否可以在模型中创建条件关联?

我已经设置了一个基于角色的访问控制系统,其中包含以下模型:

  • 角色(作为STI),
    • UserRole(全局角色)
    • ProjectRole(项目特定角色)
  • 赋值(具有不同资源的多态)
  • 用户
  • 项目(作为分配的一种资源类型)

如果用户具有特定的UserRole,则只允许用户负责该项目.此Userrole名称为"负责项目",ID为2.

在用户模型中,有两个has_many关联:responsible_assignments和responsible_projects.仅当用户具有ID为2的UserRole"负责项目"时,此关联才有效.

是否可以在用户模型中为responsible_*关联创建条件关联,这是设置此类关系的常用方法吗?

解决这类问题的最佳做法是什么?

class Role < ActiveRecord::Base
  has_many :assignments
  has_many :users, :through => :assignments

class UserRole < Role

class ProjectRole < Role

class Assignment < ActiveRecord::Base
  belongs_to :user
  belongs_to :role
  belongs_to :resource, :polymorphic => true

class User < ActiveRecord::Base
  has_many :assignments
  has_many :roles, :through => :assignments, 
                   :class_name => "UserRole"
  has_many :responsible_assignments, :class_name => "Assignment",
                                     :conditions => { :role_id => 4 }     // specific project role
  has_many :responsible_projects, :through => :responsible_assignments, 
                                 :source => …
Run Code Online (Sandbox Code Playgroud)

conditional ruby-on-rails has-many single-table-inheritance polymorphic-associations

12
推荐指数
3
解决办法
1万
查看次数

有人可以推荐一个好的宝石用于接触处理吗?

我想存储人/公司联系人的地址和关系.地址可以有多条街道,电话号码和电子邮件.拥有某种导出功能也很不错.

联系处理似乎是一项常见的任务,所以我想知道其他人是如何做这项工作的.

我看了下面的宝石和应用程序:

您使用上述宝石中的一种,是否可以推荐其他宝石,或者您自己实施(为什么以及如何实施)?

activerecord vcf-vcard ruby-on-rails addressbook ruby-on-rails-3

10
推荐指数
2
解决办法
5678
查看次数

如何以不同的间隔循环日期范围?

我有一个日期范围(从,到)我希望循环通过不同的间隔(每日,每周,每月,...)

我如何循环这个日期范围?

更新

谢谢你的回答,我想出了以下内容:

interval = 'week' # month, year
start = from
while start < to
  stop  = start.send("end_of_#{interval}")
  if stop > to
    stop = to
  end
  logger.debug "Interval from #{start.inspect} to #{stop.inspect}"
  start = stop.send("beginning_of_#{interval}")
  start += 1.send(interval)
end
Run Code Online (Sandbox Code Playgroud)

这将循环一个日期范围,其间隔为周,月或年,并且考虑给定间隔的开始和结束.

由于我在我的问题中没有提到这一点,我选择了将我推向正确方向的答案.

ruby activerecord ruby-on-rails intervals ruby-on-rails-3

9
推荐指数
2
解决办法
8441
查看次数

有人可以为pluginaweek - statemachine提供一个活跃的记录示例吗?

有人可以举例说明如何使用pluginaweek state_machine作为具有活动记录的票证模型吗?我不明白文档中复杂的例子.

示例说明:

  • 新的 - >接受,拒绝,反馈
  • 接受 - >解决或反馈
  • 反馈 - >接受或解决

activerecord ruby-on-rails state-machine

4
推荐指数
1
解决办法
1186
查看次数

如何从模型类中获取所有state_machine事件?

是否可以从模型类中获取所有事件?我想按事件过滤列表.

关于所有过渡,在邮件列表上有一个类似的问题.

我正在使用https://github.com/pluginaweek/state_machine

ruby-on-rails state-machine

3
推荐指数
1
解决办法
1921
查看次数

用于嵌套资源的sort_link的Ransack

我已经设置了一个嵌套资源,/projects/1/tasks并希望使用sort_link方法.

随着<%= sort_link @search, :taskname %>我希望/projects/1/tasks?q...,但我做得到/tasks?q....

这可能吗?

sorting ruby-on-rails ruby-on-rails-3 ransack

3
推荐指数
1
解决办法
3103
查看次数

从作为引擎安装的 gem 中重载 lib 文件

我正在使用作为引擎安装的 gem 并想自定义一些类。我要重载的文件位于我的本地 rvm 目录中

(rvmdir)/(gem)/lib/(modulename)/containers/file_to_override.rb
Run Code Online (Sandbox Code Playgroud)

我将文件复制到我的应用程序目录

(appdir)/lib/(modulename)/containers/file_to_override.rb 
Run Code Online (Sandbox Code Playgroud)

并定制了一些输出。

该文件看起来类似于:

module (Modulename)
  module Containers
    class FileToOverride << xxx
    ...
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

但它似乎并没有超载。是否可以在我自己的应用程序中覆盖 lib 文件?

ruby overloading ruby-on-rails ruby-on-rails-3

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

如何将prettify.js编码为HTML以显示在页面上

我在我的网站上使用Prettify.js和css,但它不适用于HTML

假设我有这样的HTML:

<div style="padding:3px 0px">
  <asp:Label ID="lblTotalAns" runat="server" Text="0 Answers" CssClass="ansHeading" />
</div>
Run Code Online (Sandbox Code Playgroud)

如何通过美化来呈现?

html javascript css

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

如何通过类与jquery取消选中多个选择框选项?

我有多个具有相同类的多选框,我想取消选择一个事件.他们class_for_all_multi_selects周围都有同一个班级的div .

$("#element_to_uncheck_all_options").change(function() {
  $('.class_for_all_multi_selects'). ...?
});

<div class="class_for_all_multi_selects">
  <select multiple="multiple" name="1">
    <option value="1">option1</option>
    <option value="2">option2</option>
  </select>
</div>

<div class="class_for_all_multi_selects">
  <select multiple="multiple" name="2">
    <option value="1">option1</option>
    <option value="2">option2</option>
  </select>
</div>
Run Code Online (Sandbox Code Playgroud)

如何通过类与jquery取消选中多个选择框选项?

javascript jquery jquery-selectors

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