我正在创建一个应用程序,用户可以看到培训师告诉他要做的当天锻炼。这项训练将在应用程序的主页上进行。
训练师每周上传一次,我想每天只展示一次。
我认为如果我给WOD模型一个名为wday的整数属性,那么我可以做逻辑如果Wod.wday == Date.today.cwday我会实现这个。这根本不起作用,我的static_pages控制器出错了。
下面是代码:
Wod模特:
<?php
$arr1 = $your_initial_array;
$arr2 = array_push($arr1, $your_values);
$arr3 = array();
$topop = 0;
for($x = 0; $x < count($arr2); $x++) {
for($i = 0; $i < count($arr2); $i++) {
if(strtotime($arr2[$i]['post_date'] > $latest) { // or < if you want
$topop = $i;
}
}
array_push($arr3, $arr2[$topop]);
unset($arr2[$topop]);
}
用户模型:
class Wod < ApplicationRecord
belongs_to :user
def this_day
Date.today.cwday == self.wday
end
end
静态页面控制器:
class User < ApplicationRecord
has_many :wods
def feed
Wod.this_day
end
我收到以下错误:
StaticPagesController中的NoMethodError #home undefined方法 `this_day'代表#&lt; Class:0x007f5870c1e7b8&gt;你的意思是?第三
我想知道如何完成这项任务,我们将不胜感激!
顺便说一句:如果我在用户模型Wod.all中这样做很有效,但我不想要这个
答案 0 :(得分:1)
StaticPagesController中的NoMethodError #home undefined方法 `this_day&#39;对于#&lt; Class:0x007f5870c1e7b8&gt;
问题在于Wod.this_day
。如果您想在this_day
上致电WOD
,则需要将其添加为class
方法。
更改
def this_day
Date.today.cwday == self.wday
end
到
def self.this_day
Date.today.cwday == wday
end
替代解决方案是使用scopes
。
class Wod < ApplicationRecord
belongs_to :user
scope :this_day, -> { where(wday: Date.today.cwday) }
end
答案 1 :(得分:0)
我通过将方法this_day
更改为:
def self.this_day
where("wday = ?", Date.today.cwday)
end