小编Ric*_*nes的帖子

在从表单中的文本字段解析日期时,如何更改ActiveRecord期望的格式?

问题

  1. 我有一个带有Date属性的Ruby on Rails模型.
  2. 在此模型的表单中,我使用带有JQuery日期选择器的单个文本字段来表示此属性(不是每年,每月和每天的下拉列表,就像Rails自定义一样).
  3. datepicker使用mm/dd/yyyy格式插入日期.
  4. Rails期望dd/mm/yyyy格式的日期.

例子

  • 如果用户选择2012年3月12日,则datepicker将放置03/12/2012,由Rails解释为2012年12月3日.
  • 如果用户选择2012年3月20日,则datepicker 03/20/2012将由Rails解释为2012年第20个月的第3天.由于此日期不存在,Rails将其转换为nil值(我认为).

如何在解析此日期文本字段时更改Rails使用的日期格式?

笔记:

1)我不想更改datepicker插入文本字段的日期格式,

2)我不是要求在视图中显示我的日期属性.

ruby-on-rails-3

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

Rails 3:以编程方式获取命名空间中的路由列表

如何获取Admin命名空间中所有路由的列表,以便我可以在其中一个测试中使用它?

合理

我经常犯下继承的错误,ApplicationController而不是AdminController在我的Admin命名空间中创建新控制器时.所以,我想编写一个测试来访问我的Admin命名空间中的所有路由,并验证每个路由都需要登录用户.

routes ruby-on-rails ruby-on-rails-3.2

14
推荐指数
2
解决办法
6237
查看次数

Rails - 一个模型上的两个外键都指向相同的模型

我是ActiveRecord协会的新手.我正在草拟一个应用程序,该应用程序可以跟踪在一组用户中欠谁的钱.一个Expense模型和User模型似乎是自然的选择,我只是不知道如何界定两者之间的关系.例如,我想跟踪债权人("所有者")和每笔费用的债务人,但这实际上只是两个返回用户的外键.此外,每个用户可以有多种费用(作为债权人和债务人)我迄今为止对协会的最佳猜测是:

class Expense
    # belongs_to or has_one here?
    # Not sure about class => User syntax:
    # need to alias to foreign keys that reference the same model
    belongs_to :creditor, :class => User 
    belongs_to :debtor, :class => User

class User
    # has_many expenses defines a creditor relationship (user owns expense)
    # how to define debtor relationship? (belongs_to...?)
    has_and_belongs_to_many :expenses
Run Code Online (Sandbox Code Playgroud)

我已经阅读了关于关联的Rails指南,但我仍然在外键和连接表上相当丢失.任何输入都非常感谢!

sql activerecord ruby-on-rails

11
推荐指数
2
解决办法
8772
查看次数

Rails表单 - 我应该在Controller,Model还是View中构建`accepts_nested_attributes_for`关联?

问题

我有accepts_nested_attributes_for一个孩子的父母.所以,当我有父母的表格时,我需要build孩子,所以我也可以为它显示表格字段.我想知道的是:我应该build把孩子放在哪里?在模型,视图或控制器中?

为什么我要问这个

你可能会摇头,认为我是一个疯子,因为他提出了这样的问题,但这里的思路让我在这里.

我有一个Customer模型,accepts_nested_attributes_for一个billing_address,就像这样:

class Customer
  belongs_to :billing_address, class_name: 'Address'
  accepts_nested_attributes_for :billing_address
end
Run Code Online (Sandbox Code Playgroud)

当我Customer向用户呈现一个新表单时,我想确保有一个空白billing_address,以便用户实际看到该字段billing_address.所以我的控制器中有这样的东西:

def new
  @customer = Customer.new
  @customer.build_billing_address
end
Run Code Online (Sandbox Code Playgroud)

但是,如果用户没有填写任何billing_address字段,但尝试提交无效表单,则会向他们显示一个不再包含字段的表单billing_address,除非我在create控制器的操作中添加了这样的内容:

def create
  @customer = Customer.new(params[:customer])
  @customer.build_billing_address if @customer.billing_address.nil?
end
Run Code Online (Sandbox Code Playgroud)

还有另一个问题,即如果用户尝试编辑a Customer,但Customer没有关联billing_address,则他们将看不到该字段billing_address.所以我必须向控制器添加这样的东西:

def edit
  @customer = Customer.find(params[:id])
  @customer.build_billing_address if @customer.billing_address.nil?
end
Run Code Online (Sandbox Code Playgroud)

类似的东西需要在控制器的update方法中发生.

无论如何,这是高度重复的,所以我想在模型中做一些事情.我最初的想法是为模型的after_initialize事件添加一个回调,如下所示: …

ruby-on-rails

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

Rails - 为什么`accepts_nested_attributes_for`将`autosave`设置为true

在Ruby on Rails中,如果accepts_nested_attributes_for在模型中声明,autosave则为子关联设置为true.这有必要吗?

根据我的理解,Rails将在不声明的情况下验证所有新生儿和变身儿童autosave: true.似乎这将涵盖您接受子关联的嵌套属性的所有情况.但是,autosave: true每次保存父项时,子项现在都会得到验证,即使子项未更改也是如此.

这可能会产生重大意想不到的后果,尤其是在您修改子模型时,大量的记录无效.

ruby-on-rails-3 rails-activerecord

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

Rails - 多态收藏夹(用户可以喜欢不同的型号)

我们正在尝试添加多个可接受的对象,用户可以在其中收藏许多不同的对象,但不确定如何使其工作.

这是最喜欢的型号:

class Favorite < ActiveRecord::Base
  # belongs_to :imageable, polymorphic: true
  belongs_to :user
  belongs_to :category
  belongs_to :business
  belongs_to :ad_channel
  belongs_to :location
  belongs_to :offer
end
Run Code Online (Sandbox Code Playgroud)

用户模型:

class User < ActiveRecord::Base
  has_many :favorites, as: :favoritable
end
Run Code Online (Sandbox Code Playgroud)

一个可以被收藏的例子模型:

class Category < ActiveRecord::Base
  has_many :sub_categories
  has_many :ad_channels
  has_many :offers
  belongs_to :favoritable, polymorphic: true
end
Run Code Online (Sandbox Code Playgroud)

我不确定这是否设置正确,这是我们首先需要一些反馈.

其次,我们如何为用户"喜欢"某些东西?

这是我们迄今为止尝试过的失败:

@user.favorites << Category.find(1)
Run Code Online (Sandbox Code Playgroud)

编辑:这还需要一个收藏数据库表来记录事物吗?这对我们来说是一个非常新的概念.

ruby-on-rails polymorphic-associations activemodel rails-activerecord

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