Isambard
(Isambard)
13 مارس 2024، 10:39م
1
ما هي عمليات التحقق التي يمكنك تجاوزها وكيف؟ أحاول استخدام واجهة برمجة التطبيقات للنشر وأواجه أشياء مثل:
الإنتروبيا منخفضة جدًا
الموضوع قصير جدًا
النص متشابه جدًا
المشكلة هي أنه من الصعب معرفة الفحوصات الأخرى التي قد يتم اكتشافها، لذا أتوقف عندما أواجه واحدة، وألغي المحاولة وأعيد التشغيل.
إعجاب واحد (1)
pfaffman
(Jay Pfaffman)
14 مارس 2024، 7:03م
2
إذا كنت تستورد أكثر من عدد قليل من المشاركات من قاعدة بيانات موجودة، فيجب عليك استخدام برنامج نصي للترحيل.
هناك معلمة skip_validations يمكنك تمريرها في Ruby، لكنني لا أعرف ما إذا كان يمكنك تمريرها باستخدام واجهة برمجة التطبيقات (API).
ولكن أيضًا، هل تريد حقًا إنشاء مجموعة من المشاركات القصيرة التي تحتوي على عدد قليل جدًا من الأحرف المختلفة وتشبه المشاركات الأخرى؟ هناك إعدادات موقع لتلك التي يمكنك تغييرها إذا بحثت في إعدادات الموقع عن تلك الكلمات (الإنتروبيا، الحد الأدنى لطول المشاركة، الحد الأدنى لطول العنوان المتشابه أو السماح بالعناوين المكررة).
4 إعجابات
نعم، يجب أن يعمل ذلك (يستخدم WP-Discourse ذلك، على سبيل المثال)
def find_post_revision_from_topic_id
post =
Post.find_by(topic_id: params[:topic_id].to_i, post_number: (params[:post_number] || 1).to_i)
raise Discourse::NotFound unless guardian.can_see?(post)
revision = params[:revision].to_i
raise Discourse::NotFound if revision < 2
post_revision = PostRevision.find_by(post_id: post.id, number: revision)
raise Discourse::NotFound unless post_revision
post_revision.post = post
guardian.ensure_can_see!(post_revision)
post_revision
end
private
def user_posts(guardian, user_id, opts)
# Topic.unscoped is necessary to remove the default deleted_at: nil scope
إعجابَين (2)
Isambard
(Isambard)
19 مارس 2024، 12:12ص
4
أعتقد أن هناك خطأ في تخطي التحقق من الصحة.
عندما أستخدم تخطي التحقق من الصحة لإنشاء موضوع، يعمل هذا ومن الممكن للمستخدم إنشاء موضوع في فئة حتى لو لم يكن لديه الحقوق عادةً للقيام بذلك.
ومع ذلك، عند محاولة الرد على نفس الموضوع، لا يتم تخطي التحقق من الصحة ويفشل إنشاء هذا المنشور.
إعجاب واحد (1)
هل يمكنك توضيح أي عمليات تحقق لاحقة تشير إليها بالضبط؟ ما هي الأخطاء التي تحصل عليها؟
simon
20 مارس 2024، 10:46م
6
هل أنت متأكد من ذلك؟ فهمي هو أن skip_validations يفعل ما يقول إنه يفعله في قسم الخيارات الموجود في أسفل post_creator.rb:
# :raw_html - Perform no processing
# :raw_email - Imported from an email
# via_email - Mark this post as arriving via email
# raw_email - Full text of arriving email (to store)
# action_code - Describes a small_action post (optional)
# skip_jobs - Don't enqueue jobs when creation succeeds. This is needed if you
# wrap `PostCreator` in a transaction, as the sidekiq jobs could
# dequeue before the commit finishes. If you do this, be sure to
# call `enqueue_jobs` after the transaction is committed.
# hidden_reason_id - Reason for hiding the post (optional)
# skip_validations - Do not validate any of the content in the post
# draft_key - the key of the draft we are creating (will be deleted on success)
# advance_draft - Destroy draft after creating post or topic
# silent - Do not update topic stats and fields like last_post_user_id
#
# When replying to a topic:
# topic_id - topic we're replying to
# reply_to_post_number - post number we're replying to
#
# When creating a topic:
# title - New topic title
يتم استخدامه بشكل أساسي لتجاهل القيود التي تتم إضافتها من خلال إعدادات الموقع مثل:
الحد الأدنى لطول المنشور
الحد الأدنى لإنتروبيا النص الأساسي
الحد الأدنى لطول عنوان الموضوع
…
أعتقد أنه يُستخدم أيضًا لتجاهل حدود معدل النشر.
لم أعتقد أنه يسمح للمستخدمين بإنشاء مواضيع في فئات ليس لديهم إذن بالنشر فيها.
إعجابَين (2)