与belongs_to的偏执狂

时间:2017-04-23 18:19:41

标签: ruby-on-rails ruby-paranoia

在我的应用程序中,用户has_many :jobs和作业belongs_to :user。我正在使用偏执狂宝石软删除用户和工作。

假设我有一个用户,乔,他有一份工作“推动变化”。我可以使用Job.all查看我的商家信息页面上的所有工作,但是一旦我删除了Joes的帐户,我就再也看不到使用Job.all的工作了。

我尝试使用Job.with_deleted.all并尝试取消关联belongs_to :user, -> { with_deleted }

生成的SQL语句:

SELECT "jobs".* FROM "jobs" INNER JOIN "users" ON "users"."id" = "jobs"."user_id" AND "users"."deleted_at" IS NULL WHERE "jobs"."deleted_at" IS NULL ORDER BY users.name ASC

3 个答案:

答案 0 :(得分:0)

这似乎已经在有许多工作上设置library(dplyr) edge_c_summary %>% mutate(source = "edge_c") %>% bind_rows(mutate(ridge_c_summary, source = "ridge_c")) %>% bind_rows(mutate(valley_c_summary, source = "valley_c")) %>% ggplot(aes(times, means) + geom_line(aes(color = source, group = source)) + geom_errorbar(aes(ymin = means - sd, ymax = means + sd, color = source)) ,这是删除用户的唯一方法,将对has_many进行更改。你不希望他们被隐藏,然后只需删除依赖::从用户模型中删除有很多工作

答案 1 :(得分:0)

Paranoia gem为您的模型设置默认范围,其中不返回带有时间戳的deleted_at attr设置。 尝试解开你的模型,如

<div id="section1" class="carousel slide" data-ride="carousel" data-interval="1000"> <!-- Indicators --> <ol class="carousel-indicators"> <li data-target="#section1" data-slide-to="0" class="active" ></li> <li data-target="#section1" data-slide-to="1" ></li> <li data-target="#section1" data-slide-to="2" ></li> </ol> <!-- Wrapper for slides --> <div class="carousel-inner" role="listbox"> <div class="item active"> <img src="img1.jpg" alt="..."> <div class="carousel-caption"> <!-- <h3>Caption Text</h3> --> </div> </div> <div class="item "> <img src="img2.jpg" alt="..."> <div class="carousel-caption"> <!-- <h3>Caption Text</h3> --> </div> </div> <div class="item "> <img src="img3.jpg" alt="..."> <div class="carousel-caption"> <!--h3>Caption Text</h3--> </div> </div> </div> </div>

答案 2 :(得分:0)

我知道回答这个问题可能为时已晚,但是根据我的经验。在工作模型中添加include Mongoid::Paranoia会将deleted_at添加到关联中,而不是真正删除工作记录。另外,如果您要查询已删除的作业,请尝试使用Job.unscoped.all,或者如果要从作业实例中获取已删除的User,请尝试添加方法

def user
  User.find(user_id)
end

user_id替换为映射到用户ID的实际键名。

希望有帮助! :)