小编Kat*_*han的帖子

Rails - 验证:如果一个条件为真

在Rails上5.

我有一个Order带有description属性的模型.如果满足以下两个条件之一,我只想验证它的存在:如果当前步骤等于第一步或者如果require_validation等于true.

我可以根据以下一个条件轻松验证:

validates :description, presence: true, if: :first_step?

def first_step?
 current_step == steps.first
end
Run Code Online (Sandbox Code Playgroud)

但我不知道如何添加另一个条件并验证其中一个是否属实.

就像是:

validates :description, presence: true, if: :first_step? || :require_validation
Run Code Online (Sandbox Code Playgroud)

谢谢!

validation ruby-on-rails ruby-on-rails-4 ruby-on-rails-5

17
推荐指数
2
解决办法
2万
查看次数

Rails:是否可以在视图中调用 ActiveRecord 方法 Rails

使用 Rails 4

我想知道(并且很难找到答案)是否可以直接从视图调用 ActiveRecord 方法,例如:

<%= Article.where(approved: true).count %>
Run Code Online (Sandbox Code Playgroud)

或者

<%= Article.where("short_answer is NOT NULL and short_answer != ''").count %>
Run Code Online (Sandbox Code Playgroud)

我意识到通常的做法是将这些存储在控制器内的实例变量中,但由于我使用的是部分,我不能这样做。

这样做好吗?能痛吗?有没有更好的方法来解决这个问题(例如辅助方法)?谢谢!

ruby methods activerecord ruby-on-rails ruby-on-rails-4

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

查找数组长度等于 - Rails 4 的记录

在我的Room模型中,我有一个名为 的属性available_days,它被存储为一个数组。

例如:

Room.first.available_days
=> ["wed", "thurs", "fri"]
Run Code Online (Sandbox Code Playgroud)

找到数组大小等于 3 的所有房间的最佳方法是什么?

我试过类似的东西

Room.where('LENGTH(available_days) = ?', 3)
Run Code Online (Sandbox Code Playgroud)

没有成功。

更新:的数据类型available_days是一个字符串,但为了存储一个数组,我从我的模型序列化属性:

应用程序/模型/room.rb

serialize  :available_days
Run Code Online (Sandbox Code Playgroud)

ruby sql ruby-on-rails ruby-on-rails-4

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

链接到关闭页面轨道4

使用Rails 4 ..

我已经使用javascript打开了一个页面

<%= link_to "how to choose a rating", ratingsystem_path, :onclick=>"window.open(this.href,'create_company', 'height=600, width=600');return false;" %>
Run Code Online (Sandbox Code Playgroud)

但是当我添加一个链接来关闭该页面时

<%= link_to "Close page", :onclick => "window.close();" %>
Run Code Online (Sandbox Code Playgroud)

它不起作用.我做错了吗?也许用一个标签代替?

html javascript ruby ruby-on-rails ruby-on-rails-4

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

将所有单词的首字母大写并保持已经资本化

使用rails 4,无法在此找到文档.我想将字符串中每个单词的第一个字母大写,但保留已经大写的字母.

我想要以下输出:

how far is McDonald's from here? => How Far Is McDonald's From Here?

MDMA is also known as molly => MDMA Is Also Known As Molly

i drive a BMW => I Drive A BMW
Run Code Online (Sandbox Code Playgroud)

我以为.titleize会这样做,但那会BMW变成Bmw.感谢您的任何帮助.

ruby string ruby-on-rails ruby-on-rails-4

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

target ="_ blank"vs. target = _blank

有什么区别target="_blank"和target=_blank?

似乎有相同的行为,但只是想确保一个人比另一个人更好(以及为什么).我一直使用引号,但我正在阅读rails教程,并意识到迈克尔不使用它们.

html

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

Rails 4 - in_time_zone 意外行为

我正在使用 Rails 4 尝试使用 in_time_zone 助手,但无法理解奇怪的行为。

在本地主机(或从控制台)将我的时间戳转换为 UTC 时,一切都按预期工作:

"2016-12-05 10:00 pm".to_time.in_time_zone("UTC)
=> 2016-12-06 05:00:00 UTC # this is the correct utc time
Run Code Online (Sandbox Code Playgroud)

但是,在我的生产站点上,它返回了不正确的时间。

"2016-12-05 10:00 pm".to_time.in_time_zone("UTC)
=> 2016-12-05 22:00:00 UTC # this is incorrect 
Run Code Online (Sandbox Code Playgroud)

不知道这是怎么可能的。无论如何,UTC 应该是 UTC。任何帮助理解为什么会发生这种情况都会很棒。

ruby timezone ruby-on-rails utc ruby-on-rails-4

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