在我当前的应用程序项目中,我只在应用程序首次加载时请求一个admob横幅,然后在整个应用程序中显示/隐藏它.
这是最佳做法还是我每次加载新关卡时都应该申请新横幅?此外,如果我在暂停菜单中仅在短时间内展示广告并在整个游戏的其余部分隐藏广告,它是否会带来收入差异.
我刚刚开始学习rails,如果对此的答案很明显,那么我感到抱歉。
我在我的应用程序中添加了帖子和类别表的迁移,现在使用以下行在默认值不为null的情况下添加对帖子表中类别的引用:
add_reference :posts, :category, index: true, foreign_key: true, null: false
Run Code Online (Sandbox Code Playgroud)
但是在运行迁移时出现以下错误:
SQLite3::SQLException: Cannot add a NOT NULL column with default value NULL: ALTER TABLE "posts" ADD "category_id" integer NOT NULL
Run Code Online (Sandbox Code Playgroud)
我曾尝试阅读过api,但无法弄清楚我在做什么错。
我为模型定义了以下工厂:
factory :page do
association :user, factory: :standard_user
association :post, factory: [:short_post]
after :create do |model|
model.post.user = model.user
model.save!
end
end
Run Code Online (Sandbox Code Playgroud)
后创建块似乎运行文件,工厂返回带有正确/新更改的模型对象,但这不会在我的测试数据库中持久存在.
即.如果我Page.last.post.user.id从我的测试中调用,我仍然得到在创建块之前的早期分配给post对象工厂的旧用户ID.我不确定为什么会这样.
我已将 papertrail 设置为仅记录包含 whodunnit 值的更改/当管理员通过在我的模型中使用以下条件进行更改时:
has_paper_trail if: proc { |model| PaperTrail.request.whodunnit.present? }
Run Code Online (Sandbox Code Playgroud)
然而我注意到仍然有相当数量的记录存储着空的侦探小说值。从记录来看,这些似乎主要是“更新”操作,由于某种原因,所有操作都具有空对象更改。我不确定为什么该值是空的,或者考虑到上述条件它将如何保存。
我在应用程序控制器中使用以下命令从典狱长那里获取侦探小说值:
def user_for_paper_trail
request.env['warden']&.user(:admin)&.id
end
Run Code Online (Sandbox Code Playgroud)
以前有人遇到过类似的行为吗?
我不确定我是否正确这样做,但我一直收到错误,说我的数组"currentRoute"无法解析为变量.我假设这是因为我已经在不同的范围内声明了数组.有没有什么方法可以让我的工作仍然在我的switch语句中声明变量,同时仍然使用一个简单的数组?(我不能使用arraylist,因为我的其余代码会受到影响)
switch (routeID)
{
case "1" : {
String[] currentRoute = new String[Route1.length];
currentRoute = Route1;
}
case "96" : {
String[] currentRoute = new String[Route96.length];
currentRoute = Route96;
}
}
// print out values in currentRoute
for (int i = 0; i < currentRoute.length; i++)
{
System.out.println(currentRoute[i]);
}
Run Code Online (Sandbox Code Playgroud)
还有更多的switch语句,但我刚刚为这个例子包含了2个.
编辑:switch和for语句都位于同一方法中.