mm/dd/yyyy格式插入日期.dd/mm/yyyy格式的日期.03/12/2012,由Rails解释为2012年12月3日.03/20/2012将由Rails解释为2012年第20个月的第3天.由于此日期不存在,Rails将其转换为nil值(我认为).如何在解析此日期文本字段时更改Rails使用的日期格式?
笔记:
1)我不想更改datepicker插入文本字段的日期格式,
2)我不是要求在视图中显示我的日期属性.
如何获取Admin命名空间中所有路由的列表,以便我可以在其中一个测试中使用它?
我经常犯下继承的错误,ApplicationController而不是AdminController在我的Admin命名空间中创建新控制器时.所以,我想编写一个测试来访问我的Admin命名空间中的所有路由,并验证每个路由都需要登录用户.
我是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指南,但我仍然在外键和连接表上相当丢失.任何输入都非常感谢!
我有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中,如果accepts_nested_attributes_for在模型中声明,autosave则为子关联设置为true.这有必要吗?
根据我的理解,Rails将在不声明的情况下验证所有新生儿和变身儿童autosave: true.似乎这将涵盖您接受子关联的嵌套属性的所有情况.但是,autosave: true每次保存父项时,子项现在都会得到验证,即使子项未更改也是如此.
这可能会产生重大意想不到的后果,尤其是在您修改子模型时,大量的记录无效.
我们正在尝试添加多个可接受的对象,用户可以在其中收藏许多不同的对象,但不确定如何使其工作.
这是最喜欢的型号:
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