我已经通过数据库迁移到has_many:通过帖子,类别和分类关系之间的关联.
架构:
create_table "categories", force: :cascade do |t|
t.string "title"
t.integer "subscribers"
t.integer "mod"
t.text "description"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
create_table "categorizations", force: :cascade do |t|
t.integer "category_id"
t.integer "post_id"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "posts", force: :cascade do |t|
t.string "title"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "user_id"
t.text "content"
t.integer "category_id"
end
Run Code Online (Sandbox Code Playgroud)
楷模:
class Categorization < ActiveRecord::Base
belongs_to :category
belongs_to :post
end
class Category < ActiveRecord::Base
has_many :categorizations
has_many …Run Code Online (Sandbox Code Playgroud) 如何将 aActiveRecord_AssociationRelation转换为 Rails 模型实例数组?
我有这样一个after_save钩子的代码:
class Like < ApplicationRecord
belongs_to :likee, class_name: 'User', foreign_key: 'likee_id'
belongs_to :liker, class_name: 'User', foreign_key: 'liker_id'
after_save :mutual_like?
private
def mutual_like?
if liker.likes.where(likee: liker) // returns collection proxy but I want to return an array of model instances so that I can create another model
end
end
end
Run Code Online (Sandbox Code Playgroud)
有没有办法返回实例数组?
表供参考:
create_table "likes", force: :cascade do |t|
t.integer "liker_id", null: false
t.integer "likee_id", null: false
...
end
Run Code Online (Sandbox Code Playgroud)
我认为问题在于 Rails 没有根据 likee_id / …
我有使用JavaScript动态生成的输入.但是,我不确定如何向这些添加ID.让我说清楚:我想为每个人提供不同的ID,我知道如何为所有人添加一个id.
这就是我尝试过的:
$(document).ready(function() {
var wrapper = $(".wayptHolder"); //Fields wrapper
var add_button = $(".add_field_button"); //Add button ID
var x = 0; //initial text box count
//add input element
$(add_button).click(function(event){
event.preventDefault();
if(x < 8){
$(wrapper).append('<div><input type="text", id="waypt"' + x + ' class="form-control added-input", placeholder="Next"><a href="#" class="remove_field">Remove</a></div>');//add inputbox
x++;
}
});
$(wrapper).on("click",".remove_field", function(event){ //user click on remove text
event.preventDefault(); $(this).parent('div').remove(); x--;
})
});
Run Code Online (Sandbox Code Playgroud)
但是,在新元素上,它将id显示为waypt.我研究过,它看起来不像JavaScript有字符串插值.例如,Ruby可以解决这个问题,因为它能够使用#pt(#x),以便字符串将x解释为变量.JS如何复制这种行为?
Rails输出我的文章两次.目前,我只是循环文章集合并输出它.起初我认为它是AJAX的一个问题,但我删除了application.js和index.js.erb文件中的所有javascript,它仍然重复两次.我还通过登录Rails c并运行来检查数据库,Articles.all.count并返回正确的#文章.我也重置了数据库并再次尝试使用相同的结果.
文章#指数
<h1 class="text-center">talks</h1>
<div id="articles-list" class="small-12 small-centered columns">
<%= render @articles %>
</div>
<%= will_paginate @articles %>
Run Code Online (Sandbox Code Playgroud)
_article.html.erb partial:
<% @articles.each_with_index do |article, index| %>
<%= index %>
<dl class="individual-article">
<dt><%= article.title %>
<% if current_user.try(:admin) %>
| <%= link_to 'Edit', edit_article_path(article) %>
<% end %><br>
<%= raw article.tags.map(&:name).map { |t| link_to t, tag_path(t), class: get_class(t) }.join(', ') %>
</dt>
<dd><%= truncate(article.body.html_safe, length: 200) %>
<%= link_to 'more', article_path(article) %>
</dd>
</dl>
Run Code Online (Sandbox Code Playgroud)
我把索引打开,如果它正在重复,它就是.如果我有三篇文章,它将输出0 1 2 0 …
好吧,完全被这个问题困住了,而且文档没有多少.我想编码一个这样的嵌套列表:
URI.encode_query(%{group: %{names: ["first", "second", "third", "fourth"]}})
Run Code Online (Sandbox Code Playgroud)
基本上,该结构是具有名称属性的组,该列表是列表.我收到这个错误:(Protocol.UndefinedError) protocol String.Chars not implemented for %{names: ["first", "second", "third", "fourth"]}
我发现在Elixir中没有类似这样的库.
我意识到文档说你不能使用String.Chars协议的列表,但我不明白你如何创建那个数据结构.
tldr
我希望List作为URL中的字符串.以Ruby为例,我会写
names: ["first", "second", "third", "fourth"]
在Elixir中实现这一目标的想法?
好的,所以没有办法,你必须手动完成.
参考:https://elixirforum.com/t/uri-encode-query-1-and-lists/2492
我无法理解在 golang 中组织应用程序依赖结构的最佳方法。
本质上,我的应用程序的结构如下:
accounts
...
handlers
accounts.go
models
account.go
repos
account.go
Run Code Online (Sandbox Code Playgroud)
现在我有一个用于帐户的数据库访问对象 (DAO) 设置,我想避免将验证逻辑放在那里,因为这更适合模型域。存储库旨在仅处理与数据库的交互。
在模型内部,我认为进行验证是有意义的。然而,一项验证(例如电子邮件的唯一性)需要使用 DAO,这会引发有关循环依赖的错误。
我很好奇在这个范例中组织验证的最佳方法是什么?我真的应该为任何交互添加一个服务层吗?也就是说,我是否应该有一个仅是帐户结构的模型,然后进行验证并在服务中保存挂钩之前?
所以我有一个这种格式的日志:
{
"date":1598808279.785381,
"log":"{\"level\":\"info\",\"ts\":15988.7852,\"caller\":\"server/middlewares.go:26\",\"msg\":\"Request Log\",\"status\":200,\"method\":\"GET\",\"url\":\"/health\",\"duration\":0.000008323}",
"container_id":"someid",
"container_name":"/service-name",
"source":"stdout"
}
Run Code Online (Sandbox Code Playgroud)
我想提取该log领域内的状态。阅读文档后,我看起来应该能够做到:
_collector="MyService" | json auto | fields log.status
Run Code Online (Sandbox Code Playgroud)
但是,这会引发语法错误.
我认为的另一个解决方案是,根据其他语言的工作方式,管道通常返回对象,因此如果我可以增量返回字段,这应该可以工作:
_collector="MyService" | json auto | fields (log) | fields (status)
Run Code Online (Sandbox Code Playgroud)
但这也行不通。
我尝试指定给定字段:
_collector="MyService" | json auto "fields.log.status"
Run Code Online (Sandbox Code Playgroud)
但这是行不通的。
我还尝试使用如下字段直接提取该值:
_collector="MyService" | json field=Message "log.status"
Run Code Online (Sandbox Code Playgroud)
最后,我尝试做所有这些变化:
_collector="MyService" | json auto field=log "status"
_collector="MyService" | json auto field=log | fields status
_collector="MyService" | json auto field=log "status"
_collector="MyService" | json auto field=log "log.status"
Run Code Online (Sandbox Code Playgroud)
但无济于事。
有什么想法我哪里出错了吗?
我正在尝试使用shared_examples作为跨多个路线重复期望的方法.特别是,我想测试我的页眉和页脚中的某些静态资源是否正在加载.但是,我得到一个错误说:
RSpec::Core::ExampleGroup::WrongScopeError: `it_behaves_like` is not available from within an example (e.g. an `it` block) or from constructs that run in the scope of an example (e.g. `before`, `let`, etc). It is only available on an example group (e.g. a `describe` or `context` block).
Run Code Online (Sandbox Code Playgroud)
现在,我不确定如何解决这个问题.这是我目前的设置.
shared_examples_for 'a page' do
describe 'should load static assets' do
it 'header, footer and icons' do
expect(page).to have_css 'footer.footer'
expect(page).to have_css '#navbar-brand'
brand = page.first(:css, '#navbar-brand')
visit brand[:src]
expect(page.status_code).to be 200
end
end
end
describe 'site …Run Code Online (Sandbox Code Playgroud) 我无法正确使用语法-如何将指令添加到haml模板?
假设我有一个名为“ my-directive”的指令。我想将其放入haml模板。
尝试1:直接使用html语法
<my-directive></my-directive>
显然,这是行不通的。
尝试2:上课
.my-directive
尝试3:使用ng语法
{:ng => 'my-directive' }
尝试4:使用数据
{ :ng => { :data => "newDirective" } }
尝试5:使用html / haml元素
%my-directive
尝试6:用ng包装div
%div{ :ng => 'my-directive' }
尝试7:用数据包装div
%div{ :ng => { :data => "newDirective" } }
这些都不起作用。
咨询资源:
在跑步之前
eval $(docker-machine env remote)
Run Code Online (Sandbox Code Playgroud)
我正在使用docker for mac并且具有环境上下文.但是,在运行该命令后,我现在指向远程docker机器.我理解如何不同的遥控器之间,并说当地码头工人的开关机,但它不是我清楚如何从泊坞窗机切换回搬运工的MAC引擎.
我经常遇到试图追踪所有信息的问题,例如主机、用户、密码、是否使用 ssl 等。有没有一种简单的方法可以从 psql 终端检索这些信息?
host = "localhost"
port = 5432
user = "postgres"
password = "password"
dbname = "database"
Run Code Online (Sandbox Code Playgroud)
我通常创建数据库,createdb但我不知道它使用的用户或密码。